#pragma once
#include <list>

class CHD_SDK_API Controler
{
public:
	Controler(void){};
	virtual ~Controler(void){};
	virtual bool mouse(int button, int state, int x, int y){return false;};
	virtual bool keyboard(unsigned char key, int x, int y){return false;};
	virtual bool motion(int x,int y){return false;};
};

class CHD_SDK_API ControlerLinker:public Controler
{
public:
	bool mouse(int button, int state, int x, int y);
	bool keyboard(unsigned char key, int x, int y);
	bool motion(int x,int y);
	void push_back(Controler* ctrl);
private:
#pragma warning(push)
#pragma warning(disable:4251)
	typedef std::list<Controler*> CtrlList;
	std::list<Controler*> ctrlLinker;	
#pragma warning(pop)
};